Video encoding and transmission systems often use error control systems to detect and correct certain errors at a receiver without having to ask a sender for additional data to correct the error. Error control systems often use forward error correction (FEC) to add redundant data to video data during transmission. The redundant data can then be used by the receiver to reconstruct certain missing or altered data during transmission by reconstructing the data using the remaining accurately transmitted data and the redundant data.
An FEC calculation that determines the redundant data to be added may be performed at a transmitter from payload data. The result of this calculation may be appended to the payload data and transmitted with the payload data. When the payload data and FEC calculation result are received at a receiver, the receiver may perform the FEC calculation on the received payload data and compare a result of the calculation to the received result. If the results match, the transmitted data was successfully received. If the results do not match, the receiver may be able to correct transmission errors from the received payload data and FEC calculation result received at the receiver.
In video coding systems, video encoders and decoders may generate FEC codes from packets of coded video data. These generated FEC codes may be embedded in separate FEC packets and transmitted with the corresponding FEC codes, known as packet-level FEC. In existing packet-level FEC systems, a FEC error-recovery packet is added to each group of N packets that are transmitted. If one of the packets in the group is lost during transmission, the FEC error-recovery packet may be used in conjunction with the other received packets in the group to reconstruct the lost packet in the group. Packet-level FEC may be used with various protocols including User Datagram Protocol (UDP).
To improve the chances of being able to recover a lost packet in packet-level FEC, it is possible to lower the number N of packets in each of group, so that, instead of having one FEC error-recovery packet for every ten packets, there is one FEC error-recovery packet for every five packets. While this will lower the chances of having more than one missing packet in each group, increased bandwidth is required to transmit the additional FEC error-recovery packets as the packet ratios are lowered. Because many video transmission systems are bandwidth limited, the amount of FEC error-recovery packets that may be added to the video data during transmission is also limited.
To increase the chances of being able to recover packets lost during transmission, there is a need for an error control system and method that is able to recover more than one lost packet in a group in view of limited bandwidth.